package com.ml.mall.service;

import com.ml.mall.bean.page.Page;
import com.ml.mall.bean.req.*;
import com.ml.mall.bean.req.admin.AdminIndustryQueryOneReq;
import com.ml.mall.bean.req.admin.AdminIndustryQueryPageReq;
import com.ml.mall.bean.req.admin.AdminIndustrySupplierQueryPageReq;
import com.ml.mall.bean.req.admin.category.AdminCategoryQueryOneReq;
import com.ml.mall.bean.req.admin.category.AdminCategoryQueryPageReq;
import com.ml.mall.bean.req.admin.category.CategoryQuerySubcategoryTotalfeeReq;
import com.ml.mall.bean.req.admin.coupon.CouponQueryOneReq;
import com.ml.mall.bean.req.admin.supplier.SupplierQueryOneByCategoryReq;
import com.ml.mall.bean.req.admin.supplier.SupplierQueryOneByPurchaseReq;
import com.ml.mall.bean.req.admin.supplier.SupplierQueryOneReq;
import com.ml.mall.bean.req.admin.supplier.SupplierQueryPageReq;
import com.ml.mall.bean.req.admin.variant.VariantQueryOneReq;
import com.ml.mall.bean.req.admin.variant.VariantQueryPageReq;
import com.ml.mall.bean.req.admin.purchase.PurchaseQueryOneReq;
import com.ml.mall.bean.req.admin.purchase.PurchaseQueryReportPageReq;
import com.ml.mall.bean.req.admin.purchase.PurchaseQuerySpentCategoryReq;
import com.ml.mall.bean.res.admin.*;
import com.ml.mall.bean.res.admin.category.AdminCategoryQueryPageRes;
import com.ml.mall.bean.res.admin.category.AdminCategoryQueryReportPageRes;
import com.ml.mall.bean.res.admin.category.CategoryQuerySubcategoryTotalfeeRes;
import com.ml.mall.bean.res.admin.variant.VariantQueryOneRes;
import com.ml.mall.bean.res.admin.variant.VariantQueryPageRes;
import com.ml.mall.bean.res.admin.variant.VariantQueryTopRes;
import com.ml.mall.bean.res.admin.supplier.SupplierQueryOneByPurchaseRes;
import com.ml.mall.bean.res.admin.supplier.SupplierQueryOneByCategoryRes;
import com.ml.mall.bean.res.admin.supplier.SupplierQueryOneRes;
import com.ml.mall.bean.res.admin.supplier.SupplierQueryPageRes;
import com.ml.mall.bean.res.admin.supplier.SupplierQueryReportRes;
import com.ml.mall.bean.res.admin.vo.TypeSalesAndTotalSalesRes;
import com.ml.mall.bean.vo.DateValueVO;

import java.util.List;

/**
 * Created by kyyang on 2021/6/8 21:56
 */
public interface AnalyticsAdminService {

    /**
     * @description: 获取管理员面板内容 时间范围内
     * @author kyyang
     * @date 2021/6/8 21:57
     * @version 1.0
     */
    AdminOverviewRes getAdminOverview(BaseDateRangeReq req) throws Exception;

    /**
     * @description: 管理员买家订单报告 时间范围内
     * @author kyyang
     * @date 2021/6/15 21:48
     * @version 1.0
     */
    AdminPurchaseRes getAdminPurchase(BaseDateRangeReq req) throws  Exception;

    /**
     * @description: 买家消费金额分页查询
     * @author kyyang
     * @date 2021/6/16 22:01
     * @version 1.0
     */
    Page<PurchaseReportPageRes> adminPurchaseQueryReportPage(PurchaseQueryReportPageReq req, Long supplierId) throws Exception;

    /**
     * @description: 买家时间范围内交易详情
     * @author kyyang
     * @date 2021/6/16 22:47
     * @version 1.0
     */
    PurchaseQueryOneRes adminPurchaseQueryOneDetail(PurchaseQueryOneReq req) throws Exception;

    /**
     * @description: 买家消费目录：分页查询
     * @author kyyang
     * @date 2021/6/16 23:15
     * @version 1.0
     */
    Page<PurchaseByNameSpentRes> adminPurchaseSpentByCategory(PurchaseQuerySpentCategoryReq req) throws Exception;

    /**
     * @description: 买家消费卖家：分页查询
     * @author kyyang
     * @date 2021/6/16 23:15
     * @version 1.0
     */
    Page<PurchaseByNameSpentRes> adminPurchaseSpentBySupplier(PurchaseQuerySpentCategoryReq req) throws Exception;

    /**
     * @description: 买家消费产品：分页查询
     * @author kyyang
     * @date 2021/6/16 23:15
     * @version 1.0
     */
    Page<PurchaseByNameSpentRes> adminPurchaseSpentByProduct(PurchaseQuerySpentCategoryReq req) throws Exception;

    /**
     * @description: industry:前10 每日数据
     * @author kyyang
     * @date 2021/6/19 21:49
     * @version 1.0
     */
    List<TypeSalesRes> adminIndustryQueryTop(BaseDateRangeReq req) throws Exception;

    /**
     * @description: industry：分页查询
     * @author kyyang
     * @date 2021/6/21 21:30
     * @version 1.0
     */
    Page<AdminIndustryQueryRes> adminIndustryQueryPage(AdminIndustryQueryPageReq req) throws Exception;

    /**
     * @description: 查询某一个产业的汇总明细
     * @author kyyang
     * @date 2021/6/21 22:03
     * @version 1.0
     */
    List<DateValueVO> adminIndustryQueryOne(AdminIndustryQueryOneReq req) throws Exception;

    /**
     * @description: 管理员查询目录报告：前10名
     * @author kyyang
     * @date 2021/6/21 22:31
     * @version 1.0
     */
    TypeSalesAndTotalSalesRes adminCategoryQueryTop(BaseDateRangeReq req, Long supplierId) throws Exception;

    /**
     * @description: 管理员分页查询目录报告
     * @author kyyang
     * @date 2021/6/22 21:34
     * @version 1.0
     */
    Page<AdminCategoryQueryPageRes> adminCategoryQueryPage(AdminCategoryQueryPageReq req, Long supplierId) throws Exception;

    /**
     * @description: 行业下产品属供销商 销售额分页查询
     * @author kyyang
     * @date 2021/6/22 22:03
     * @version 1.0
     */
    Page<AdminIndustrySupplierQueryRes> admiIndustrySupplierQueryPage(AdminIndustrySupplierQueryPageReq req) throws Exception;

    /**
     * @description: 查询某一目录详细：每日详细
     * @author kyyang
     * @date 2021/6/22 23:01
     * @version 1.0
     */
    List<DateValueVO> adminCategoryQueryOne(AdminCategoryQueryOneReq req, Long supplierId) throws Exception;

    /**
     * @description: category：report_page
     * @author kyyang
     * @date 2021/6/22 23:25
     * @version 1.0
     */
    Page<AdminCategoryQueryReportPageRes> adminCategoryQueryReportPage(AdminCategoryQueryPageReq req, Long supplierId) throws Exception;

    /**
     * @description: 查询某一个目录商家销售额分页：此处为：一级目录
     * @author kyyang
     * @date 2021/6/23 21:32
     * @version 1.0
     */
    Page<AdminIndustrySupplierQueryRes> admiCategoryQueryOneDetailSalesSupplier(AdminIndustrySupplierQueryPageReq req) throws Exception;

    /**
     * @description: 产品变体查询分析报告：前10名
     * @author kyyang
     * @date 2021/6/23 21:39
     * @version 1.0
     */
    List<VariantQueryTopRes> adminVariantQueryTop(BaseDateRangeReq req, Long supplierId) throws Exception;

    /**
     * @description: 查询某一个变体的时间范围内的销售报告
     * @author kyyang
     * @date 2021/6/23 22:52
     * @version 1.0
     */
    VariantQueryOneRes adminVariantQueryOne(VariantQueryOneReq req, Long supplierId) throws Exception;

    /**
     * @description: 查询某一个目录子目录的销售额；根目录查一级；一级查二级；找parentId 等于 传入id的子目录就行了
     * @author kyyang
     * @date 2021/6/24 22:53
     * @version 1.0
     */
    List<CategoryQuerySubcategoryTotalfeeRes> adminCategoryQuerySubcategoryTotalfee(CategoryQuerySubcategoryTotalfeeReq req) throws Exception;

    /**
     * @description: 分页查询变体汇总
     * @author kyyang
     * @date 2021/6/26 11:39
     * @version 1.0
     */
    Page<VariantQueryPageRes> adminVariantQueryPage(VariantQueryPageReq req, Long supplierId) throws Exception;

    /**
     * @description: 查询供应商统计
     * @author kyyang
     * @date 2021/6/26 15:25
     * @version 1.0
     */
    List<SupplierQueryReportRes> adminSupplierQueryReport(BaseDateRangeReq req) throws Exception;

    /**
     * @description: 分页查询供应商统计
     * @author kyyang
     * @date 2021/6/26 17:31
     * @version 1.0
     */
    Page<SupplierQueryPageRes> adminSupplierQueryPage(SupplierQueryPageReq req) throws Exception;

    /**
     * @description: 某一供应商报告
     * @author kyyang
     * @date 2021/6/26 18:11
     * @version 1.0
     */
    SupplierQueryOneRes adminSupplierQueryOne(SupplierQueryOneReq req) throws Exception;

    /**
     * @description: 查询某一个公司 时间范围内 目录销售额
     * @author kyyang
     * @date 2021/6/26 19:15
     * @version 1.0
     */
    Page<SupplierQueryOneByCategoryRes> adminSupplierQueryOneByCategory(SupplierQueryOneByCategoryReq req) throws Exception;


    /**
     * @description: 某卖家下买家消费分页
     * @author kyyang
     * @date 2021/6/26 20:33
     * @version 1.0
     */
    Page<SupplierQueryOneByPurchaseRes> adminSupplierQueryOneByPurchasePage(SupplierQueryOneByPurchaseReq req) throws Exception;

    /**
     * @description: 某张券消费情况
     * @author kyyang
     * @date 2021/6/26 21:01
     * @version 1.0
     */
    List<DateValueVO> adminCouponQueryOne(CouponQueryOneReq req) throws Exception;
}
